package io.renren.modules.api.controller;


import io.renren.common.utils.HttpClientHelper;
import io.renren.common.utils.R;
import io.renren.common.utils.RandomUtils;
import io.renren.common.validator.Assert;
import io.renren.modules.api.annotation.AuthIgnore;
import io.renren.modules.api.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

/**
 * 注册
 * @author chenshun
 * @email sunlightcs@gmail.com
 * @date 2017-03-26 17:27
 */
@RestController
@RequestMapping("/api")
public class ApiRegisterController {
    @Autowired
    private UserService userService;

    //用来存手机号验证码
    private Map<String, Object> codemap = new HashMap<>();


    /**
     * 注册
     */
    @AuthIgnore
    @PostMapping("register")
    public R register(String mobile, String password,String smsCode){
        Assert.isBlank(mobile, "手机号不能为空");
        Assert.isBlank(password, "密码不能为空");
        Assert.isBlank(smsCode, "验证码不能为空");

        String code = codemap.get(mobile).toString();
        if(!smsCode.equals(code)) {
            return R.error("验证码错误");
        }
        userService.save(mobile, password);
        return R.ok();
    }

    /**
     * 获取手机短信验证码
     * @param mobile
     * @return
     */
    @AuthIgnore
    @PostMapping("getCode")
    public R getCode(String mobile){
        Map<String, String> para = new HashMap<String, String>();

        /**
         * 目标手机号码，多个以“,”分隔，一次性调用最多100个号码，示例：139********,138********
         */
        para.put("mob", mobile);

        /**
         * 微米账号的接口UID
         */
        para.put("uid", "QuSugydhxPUe");

        /**
         * 微米账号的接口密码
         */
        para.put("pas", "h45knk4p");

        /**
         * 接口返回类型：json、xml、txt。默认值为txt
         */
        para.put("type", "json");

        /**
         * 短信内容。必须设置好短信签名，签名规范：

         * 1、短信内容一定要带签名，签名放在短信内容的最前面；

         * 2、签名格式：【***】，签名内容为三个汉字以上（包括三个）；

         * 3、短信内容不允许双签名，即短信内容里只有一个“【】”
         *
         */
        para.put("cid", "fG63vomkfYWT");

        String code = RandomUtils.generaterNumber(6);
        para.put("p1", code);
//        para.put("p2", "3");
        /**
         * 特别注意：参数传递时去除“<>”符号！
         */
        try {
            System.out.println(HttpClientHelper.convertStreamToString(
                    HttpClientHelper.get("http://api.weimi.cc/2/sms/send.html",
                            para), "UTF-8"));

            /*System.out.println(HttpClientHelper.convertStreamToString(
                    HttpClientHelper.post(
                            "http://api.weimi.cc/2/sms/send.html", para),
                    "UTF-8"));*/
        } catch (Exception e) {
            e.printStackTrace();
        }
        codemap.put(mobile, code);
        return R.ok().put("SmsCode", code);
    }

}
